A computer network is a collection of interconnected computing devices that exchange data and share resources. Computing devices within the network typically include a mechanism, referred to herein as a management interface, for directly or remotely configuring the network device. By interacting with the management interface, various clients, such as human users and automated scripts, can perform a vast amount of configuration tasks. As an example, the clients may configure interface cards of a router, adjust parameters for the supported network protocols of the router, specify the physical components within the routing device, modify the routing information maintained by the router, access software modules and other resources residing on the router, and the like.
In some network devices, the management interface allows a client to configure the present configuration of the network device using a commit-based model. In a commit-based model, a client issues one or more configuration commands, and then directs the management interface to apply the commands by issuing a “commit” command. Typically, the client may direct the management interface to disregard the commands by issuing a “rollback” command.
For example, a client typically places the network device in a configuration mode, often by issuing an edit command to the management interface. In this mode, the management interface may essentially “lock” the network device, and reject any configuration commands from other clients. Next, the client typically issues a number of commands directing the management interface to modify the present configuration, followed by a commit command that directs the network device to apply the commands. Upon receiving the commit command, the management interface exits the configuration mode, and applies the changes to the present configuration, thereby adjusting the operation of the network device. Finally, the management interface exits the configuration mode, effectively “unlocking” the network device and allowing configuration by another client.
As the complexity of computing networks has increased, there has been an increasing need for routers and other network devices to support concurrent configuration by multiple clients. Consequently, some devices allow multiple clients to concurrently issue configuration commands. In other words, the management interface of such a device does not “lock” the configuration of the device to a single client, but receives configuration commands from multiple clients while operating in configuration mode. When the management interface receives a commit command from any of the clients providing commands, the management interface applies all of the pending changes from all of the concurrent clients to the present configuration. These techniques can be problematic in that partial changes made by a client may be committed in response to a commit command from another client. Furthermore, uncommitted changes made by a client may be lost when another client issues a “rollback” command.
Moreover, the significant increase in network complexity over the last decade has also resulted in edge and core routers maintaining voluminous amounts of configuration data. Processing the configuration changes made by the multiple clients requires significant computing resources and time.